package com.solution.admin.product.service;

import java.util.List;
import java.util.Map;

import com.solution.admin.product.entity.ProductCategoryEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 商品类别信息接口service接口层
 * @author xu_cc
 * @date 2017-08-31 23:52:27
 */
public interface ProductCategoryService {

	/**
	 * 保存商品类别信息
	 * @param ebProductCategoryEntity 商品类别信息实体
	 * @return Long 返回插入商品类别信息记录ID
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public long saveProductCategory(ProductCategoryEntity ebProductCategoryEntity);
	
	
	/**
	 * 删除商品类别信息
	 * @param 
	 * @return int 返回删除记录条数
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public int deleteProductCategoryById(long id);
	
	
	/**
	 * 根据ID查询商品类别信息
	 * @param id 商品类别信息id
	 * @return ProductCategoryEntity 商品类别信息对象
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public ProductCategoryEntity getProductCategoryById(Long id);

	/**
	 * 更新商品类别信息
	 * @param ProductCategoryEntity 商品类别信息对象
	 * @return int 更新是否成功，>1代表更新成功
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public int updateProductCategory(ProductCategoryEntity ebProductCategoryEntity);

	/**
	 * 分页查询商品类别信息
	 * @param pageParam 分页参数
	 * @param paramMap 查询参数
	 * @return PageBean 分页参数和分页数据
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public PageBean listProductCategoryPage(PageParam pageParam, Map<String, Object> paramMap);
	
	/**
	 * 根据条件查询商品类别信息
	 * @param param
	 * @return 商品类别信息列表
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public List<ProductCategoryEntity> listProductCategory(Map<String, Object> param);
	
	public List<ProductCategoryEntity> listProductCategory();

	/**
	 * 根据关键字查询相关的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	public List<ProductCategoryEntity> listProductCategoryBySearchKey(Map<String, Object> param);
	
	
	
	/**
	 * 查询PC端首页的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	public List<ProductCategoryEntity> listProductCategoryForIndex(Map<String, Object> param);
	
	/**
	 * 重新加载分类排序
	 * 
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年4月27日 下午5:54:45
	 */
	public void doReloadCategorySort();
	
	/**
	 * 根据分类ID集合获取所有的分类
	 * @param categoryIds
	 * @return
	 * @author xkl
	 * @date 2018年6月12日 下午6:43:14
	 */
	public Map<String, ProductCategoryEntity> listProductCategoryByIds(List<Long> categoryIds);


	/**
	 * 查询商品分类列表
	 * @param param
	 * @return
	 */
	public List<ProductCategoryEntity> listProductCategoryForSelector(Map<String, Object> param);
	
}
